高频错误自检清单(提交前 15~60 秒)
目标:用最短时间排除最常见 WA/TLE。
1) 读题与约束
- [ ] 我写下了
、值域、时间限制,以及预期复杂度(例如 ) - [ ] 多组数据?是否需要清空数组/容器?
- [ ] 输入是 1-index 还是 0-index?输出是否需要按原顺序?
2) 边界与数据类型
- [ ] 是否有空集/单点/全相等/全为 0/全为负数等极端情况?
- [ ]
int是否会溢出?(乘法、前缀和、最短路 dist) - [ ] INF 是否足够大?是否可能
INF + w溢出?
3) 算法前提条件
- [ ] 二分:单调性是否真的成立?
mid更新是否会死循环? - [ ] Dijkstra:边权非负?
- [ ] 贪心:我能说出交换论证/反证的核心一句话吗?
- [ ] DP:状态是否覆盖所有情况?转移是否重复计数?
4) 实现与性能
- [ ] 循环边界:
<=/<是否正确? - [ ] 排序比较函数是否严格弱序?
- [ ] 使用
vector时是否预留容量?是否有的隐藏行为? - [ ] 哈希/集合:是否需要
reserve降低常数(可选)
5) 最小化验证(能做就做)
- [ ] 手算一个最小反例(例如 1、2、3 个元素)
- [ ] 手算一个最大/极端反例
- [ ] 若实现复杂:写一个小的随机对拍(见 contest-skills 的对拍课)